using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Com.AlbLab.GEP.Domain;
using System.Collections.Generic;
using Com.AlbLab.GEP.Domain.Entities;
using Com.AlbLab.GEP.Domain.Entities.Dataset;

namespace common
{
    public class ToGenericListTransformers
    {
        public static IList<GenericListDTO> transform(Com.AlbLab.GEP.Services.Impl.ServiceFactory servizi, IList<GEP_FASE> dataList)
        {
            IList<GenericListDTO> l = new List<GenericListDTO>();

            string cUfficio;
            string cStato;
            foreach (GEP_FASE e in dataList)
            {
                cUfficio = servizi.AnagraficheService.getUffici()[e.Fas_Unit_Oper.ToString()].Des_ufficio;
                cStato = servizi.AnagraficheService.getListaStatiFase()[e.Fas_Stato.ToString()].Stf_des_stato.ToLower();
                l.Add(new GenericListDTO(e.Fas_Id.ToString(),e.Fas_Progr_Fase.ToString(),string.Concat( e.Fas_des_fase," / ",cStato), cUfficio, e.Fas_Dt_Arrivo.Value.ToShortDateString(), (e.Fas_Dt_Finelav.HasValue?e.Fas_Dt_Finelav.Value.ToShortDateString():null),null, null,null, null));
            }
            return l;
        }

        public static IList<GenericListDTO> transform(IList<PraticaBase> dataList)
        {
            int i;
            i = 1;
            IList<GenericListDTO> l = new List<GenericListDTO>();
            foreach (PraticaBase e in dataList)
            {
                l.Add(new GenericListDTO(i.ToString(), e.CodiceServizio, e.CodiceFlusso, e.DescrizioneServizio, e.TipoPratica, e.PraticaAmmisibile, e.DesCodInam, e.NoteInam, null,null));
                i=i+1;
                //l.Add(new GenericListDTO(e.Fas_Id.ToString(), e.Fas_des_fase, e.Fas_Unit_Oper, e.Fas_Dt_Arrivo.Value.ToShortDateString(), (e.Fas_Dt_Finelav.HasValue ? e.Fas_Dt_Finelav.Value.ToShortDateString() : null), null, null, null, null));
            }
            return l;
        }

        public static IList<GenericListDTO> transform(List<GEP_TESTATA> dataList)
        {
            string cStato;
            string cUfficio;

            IList<GenericListDTO> l = new List<GenericListDTO>();
            foreach (GEP_TESTATA e in dataList)
            {
                cUfficio = "XXXXXX";
                cStato = "YYYYYY";
                //l.Add(new GenericListDTO(e.Id_tes_cod_pratica.ToString(), e.Tes_Dt_Arr_Pra.ToShortDateString(), e.Tes_Pariva_Cli + " " + e.Tes_Codfis_Cli, e.Gep_ana_vendi.Ven_ragsoc, e.Gep_ana_serv.Ser_des_servizio, null, null, null, null));
                l.Add(new GenericListDTO(e.Id_tes_cod_pratica.ToString(), e.Id_tes_cod_pratica.ToString(), e.Tes_Cod_Prat_Utente, e.Tes_Cod_Servizio, cUfficio, e.Tes_Pod, cStato, e.Gep_ana_vendi.Ven_ragsoc, null, null));
            }
            return l;
        }

        public static IList<GenericListDTO> transformInvio(List<GEP_TESTATA> dataList)
        {
            string cStato;
            string cUfficio;

            IList<GenericListDTO> l = new List<GenericListDTO>();
            foreach (GEP_TESTATA e in dataList)
            {
                cUfficio = "XXXXXX";
                cStato = "YYYYYY";
                //l.Add(new GenericListDTO(e.Id_tes_cod_pratica.ToString(), e.Tes_Dt_Arr_Pra.ToShortDateString(), e.Tes_Pariva_Cli + " " + e.Tes_Codfis_Cli, e.Gep_ana_vendi.Ven_ragsoc, e.Gep_ana_serv.Ser_des_servizio, null, null, null, null));
                l.Add(new GenericListDTO(e.Id_tes_cod_pratica.ToString(), e.Id_tes_cod_pratica.ToString(), e.Tes_Cod_Prat_Utente, e.Tes_Pod, e.Gep_ana_vendi.Ven_ragsoc, null, null, null, null, null));
            }
            return l;
        }

        public static IList<GenericListDTO> transform(Com.AlbLab.GEP.Services.Impl.ServiceFactory servizi, List<GEP_TESTATA> dataList)
         {
            string cStato;
            string cUfficio;

            IList<GenericListDTO> l = new List<GenericListDTO>();
            foreach (GEP_TESTATA e in dataList)
            {
                cUfficio = servizi.AnagraficheService.getUffici()[e.Tes_ufficio_assegnazione.ToString()].Des_ufficio;
                cStato = servizi.AnagraficheService.getStatiPratica()[e.Tes_Stato.ToString()].DES_stato_pratica;
                //l.Add(new GenericListDTO(e.Id_tes_cod_pratica.ToString(), e.Tes_Dt_Arr_Pra.ToShortDateString(), e.Tes_Pariva_Cli + " " + e.Tes_Codfis_Cli, e.Gep_ana_vendi.Ven_ragsoc, e.Gep_ana_serv.Ser_des_servizio, null, null, null, null));
                l.Add(new GenericListDTO(e.Id_tes_cod_pratica.ToString(), e.Id_tes_cod_pratica.ToString(),e.Tes_Cod_Prat_Utente,e.Tes_Cod_Servizio,cStato,e.Tes_ultima_fase, e.Tes_Pod , cUfficio, e.Gep_ana_vendi.Ven_ragsoc,  null  ));
            }
            return l;
        }

        public static IList<GenericListDTO> transformCaricaPratiche(List<PraticaBase> dataList)
        {
            string cTmp;
            int i;
            i = 1;

            IList<GenericListDTO> l = new List<GenericListDTO>();
            foreach (PraticaBase e in dataList)
            {
                cTmp = "";
                if (e.Cod_Prat_Utente != "-1")
                {
                    cTmp = e.Cod_Prat_Utente;
                }
                //l.Add(new GenericListDTO(e.  Id_tes_cod_pratica.ToString(), e.Tes_Dt_Arr_Pra.ToShortDateString(), e.Tes_Pariva_Cli + " " + e.Tes_Codfis_Cli, e.Gep_ana_vendi.Ven_ragsoc, e.Gep_ana_serv.Ser_des_servizio, null, null, null, null));
                l.Add(new GenericListDTO(i.ToString(), cTmp, e.CodicePOD, e.CodiceServizio, e.PraticaAmmisibile, e.DesCodInam, null, null, null,  null));
                i += 1;
            }
            return l;
        }

        public static IList<GenericListDTO> transform(DS_snd_risposte dataList)
        {
            IList<GenericListDTO> l = new List<GenericListDTO>();
            foreach (DS_snd_risposte.TBL_SND_risposteRow e in dataList.TBL_SND_risposte.Rows)
            {
                l.Add(new GenericListDTO(e.RIS_key.ToString(), e.RIS_cod_disp.ToString(), e.RIS_piva_mitt.ToString(), e.RIS_nome, e.RIS_tipo_prat.ToString(), e.RIS_numero_pratiche.ToString(), null, null, null, null));
            }
            return l;
        }
    }
}
